/******************************************
 *Author:王英杰
 *Function:悔棋过程对栈的操作
 *Created Date:2013.05.18
 *Last Modified:2013.05.28
 ******************************************/

#include "regret.h"
#include "data.h"

int isemptystack()//判断栈是否为空
{
     return(history->next==NULL);
}
void push(int x,int y,int color)//下棋时，输入棋子的位置坐标和颜色
{
    struct History *temp,*point;//建立结点point和暂时存储变量指针temp
    point=(struct History*)malloc(sizeof(struct History));//给结点开空间
    point->x=x;//给x坐标节点赋值
    point->y=y;//给y坐标节点赋值
    point->color=color;//给颜色赋值
    temp=history->next;
    history->next=point;
    point->next=temp;//插入栈结点
}
void pop()//删除栈顶结点
{
     struct History *temp;
     if(isemptystack()) return;//如果栈为空，返回程序
     else//如果栈不为空，删除栈的第一个结点
     {
         temp=history->next;
         history->next=temp->next;
         ChessBoard[temp->x][temp->y]=0;
         free(temp);
     }
}
void regret()//悔棋，即删除栈顶2个结点
{
    pop();
    pop();
}
void clear()//当一盘棋结束需要重新开始的时候，清除栈中所有记录
{
    for(;!(isemptystack());)//如果栈不为空，则删除栈中结点
        pop();
}

